 package com.qiaofang.applet.service.other.service;

 import com.qiaofang.applet.common.base.BaseService;
 import com.qiaofang.applet.service.other.domain.CityCompany;
 import com.qiaofang.applet.service.other.service.dto.*;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;

 import java.util.List;
 import java.util.Map;

/**
 * Created by IDEA.
 *
 * @auther Zym.
 * @company qiaofang
 * @date 2020/9/12 11:35
 */
public interface CityCompanyService extends BaseService<CityCompany, String> {

    /**
     * 保存公司
     * @param cityCompany
     */
    void saveCompany(CityCompany cityCompany);

    /**
     * 获取公司列表
     * @param corporationCode
     * @return
     */
    List<CityCompanyDto> getCompanyList(String corporationCode);

    CityCompany getDefaultCityCompany(String corporationCode);

    /**
     * 获取城市list
     * @return
     */
    List<CityDesDto> getCityList(String corporationCode);

    /**
     * 获取城市list
     * @return
     */
    List<CityDesDto> getCityList(String corporationCode, List<String> cityCodeList);

    /**
     * 批量删除公司
     * @param corporationCode
     */
    void removeCompanyByCorp(String corporationCode);

    /**
     * 获取城市列表（Key：cityCode, value：cityName)
     * @param corporationCode
     * @return
     */
    Map<String, String> getCityMap(String corporationCode);

    CityCompany getCompanyByUuid(String companyUuid);

    String getCompanyUuid(String cityCode, String corporationCode);

    CityCompany getCompanyByCityAndCorp(String cityCode, String corporationCode);

    List<CompanyEmpShowDto> getEmpShowList(String corporationCode, List<String> cityCodes);

    CompanyEmpRulesDto getEmpShowRules(String companyUuid, String corporationCode);

    void saveEmpShowRules(CompanyEmpRulesDto companyEmpRulesDto);

    /**
     * 单个城市
     * @param cityCode
     * @return
     */
    String getCityByCitycode(String cityCode);

    /**
     * 获取主城市库
     * @param cityCode
     * @param corporationCode
     * @return
     */
    String getCompanyUuidByMainCity(String corporationCode, String cityCode);

    /**
     * 后台管理查询权限下的城市列表
     * @param corporationCode
     * @param cityCodes
     * @param pageable
     * @return
     */
    Page<CityCompany> listAllPermissionCityCompany(String corporationCode, List<String> cityCodes, Pageable pageable);

    /**
     * 根据子域名查询城市信息
     * @param subWebDomain
     * @return
     */
    CityCompany getCityCompany(String subWebDomain);

    /**
     * 清理域名->城市缓存信息
     * @param corporationCode
     */
    void clearDomainCache(String corporationCode);

    /**
     * 官网子域名是否全局唯一
     * @param cityCompanyReq
     * @return
     */
    Boolean subWebDomainIsOnly(CityCompany cityCompanyReq);

    /**
     * 新建公司库选择城市列表
     * @return
     */
    List<CityCodeAndNameDto> listCityCodeAndName();

    /**
     * v20版公司经纪人规则列表
     * @param corporationCode
     * @param cityCodes
     * @return
     */
    List<CompanyEmpShowDto> getV20EmpShowList(String corporationCode, List<String> cityCodes);

}
